/**
 *
 * @description: 对象扩展
 * @author: junyong.hong
 * @createTime: 2018/3/28
 * @version: 1.0.0.0
 * @history:
 *    1、
 *    2、
 *
 */
{
    // 简洁表达
    let o = 1;
    let k = 2;
    let es5 = {
        o:o,
        k:k
    };

    let es6 = {
        o,
        k
    };
    console.log(es5,es6);           // {o: 1, k: 2}  {o: 1, k: 2}

    // 对象里有方法
    let es5_method = {
        hello:function () {
            console.log('hello');
        }
    };
    let es6_method = {
        hello(){
            console.log('hello');
        }
    };
    console.log(es5_method.hello(),es6_method.hello());// hello hello
}

{
    // 属性表达式
    let a = 'b';
    let es5_obj = {
        a:'c'
    };
    // [a]是一个变量
    let es6_obj = {
        [a]:'c'
    };
    // {a: "c"}   {b: "c"}
    console.log(es5_obj,es6_obj)
}

{
    // 新增API
    // Object.is与三个等号相同  输出：true true
    console.log('判断2个字符串是否相等', Object.is('abc','abc'), 'abc' === 'abc');

    // 数组是引用类型，但是数组引用的是不同地址  输出：false false
    console.log('数组',Object.is([],[]), [] === []);

    // 当个对象合并成一个对象{a: "a", b: "b"}
    console.log('拷贝', Object.assign({a:'a'}, {b:'b'}));

    // 对数组进行遍历
    let test = {k:123,o:456};
    for(let [key,value] of Object.entries(test)){
        console.log(key,value);
    }
}

{
    // 扩展运算符（babel不支持，不使用）
    // let {a,b,...c} = {a:'test', b:'kill', c:'ddd', d:'ccc'};
    // console.log()
}
















